import axios from 'axios';

// 配置基础 URL
// 使用 /api 作为基础路径，Vite 会自动代理到后端
const API_BASE_URL = '/api';

// 创建 axios 实例
const apiClient = axios.create({
  baseURL: API_BASE_URL,
  timeout: 10000,  // 10秒超时
  withCredentials: true,  // 重要！发送 Cookie（包含 token）
  headers: {
    'Content-Type': 'application/json',
  },
});

/**
 * 获取通知列表（分页）
 * 
 * 参数说明：
 * - page_no: 页码，从 1 开始
 * - page_size: 每页数量
 * - enterprise_id: 企业 ID
 * 
 * 返回值：
 * {
 *   list: [...],      // 通知列表
 *   pageNo: 1,        // 当前页码
 *   pageSize: 10,     // 每页数量
 *   pageTotal: 5,     // 总页数
 *   totalCount: 50    // 总记录数
 * }
 */
export const fetchNoticeList = async (params) => {
  try {
    // 注意：因为 Vite 代理配置，这里不需要 /api 前缀
    const response = await apiClient.get('/notice/list', { params });
    return response.data.data;  // 后端返回的格式是 { code, message, data }
  } catch (error) {
    throw new Error(error.response?.data?.message || '获取通知列表失败');
  }
};

/**
 * 获取通知详情
 * 
 * 参数说明：
 * - noticeId: 通知 ID
 * - username: 当前用户名
 * - enterprise_id: 企业 ID
 * 
 * 返回值：NoticeVO 对象
 */
export const fetchNoticeDetail = async (noticeId, params) => {
  try {
    const response = await apiClient.get(`/notice/${noticeId}`, { params });
    return response.data.data;
  } catch (error) {
    throw new Error(error.response?.data?.message || '获取通知详情失败');
  }
};

/**
 * 获取未读通知数量
 * 
 * 参数说明：
 * - username: 当前用户名
 * 
 * 返回值：整数，未读数量
 */
export const fetchUnreadCount = async (username) => {
  try {
    const response = await apiClient.get('/notice/unread/count', {
      params: { username },
    });
    return response.data.data;
  } catch (error) {
    throw new Error(error.response?.data?.message || '获取未读数量失败');
  }
};